#include "../../lv_examples.h"
#if LV_USE_SPINBOX && LV_BUILD_EXAMPLES

static lv_obj_t * spinbox;


// 自旋框增加按钮的事件回调函数
static void lv_spinbox_increment_event_cb(lv_event_t * e)
{
    // 获取事件代码
    lv_event_code_t code = lv_event_get_code(e);
    // 判断事件代码，如果是短按或者长按重复事件，则调用自增函数（增加自选框的值）
    if(code == LV_EVENT_SHORT_CLICKED || code  == LV_EVENT_LONG_PRESSED_REPEAT) {
        lv_spinbox_increment(spinbox);
    }
}

// 自旋框减少按钮的事件回调函数
static void lv_spinbox_decrement_event_cb(lv_event_t * e)
{
    // 获取事件代码
    lv_event_code_t code = lv_event_get_code(e);
    // 判断事件代码，如果是短按或者长按重复事件，则调用自减函数（减少自选框的值）
    if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) {
        lv_spinbox_decrement(spinbox);
    }
}


void lv_example_spinbox_1(void)
{   
    // 创建旋转器
    spinbox = lv_spinbox_create(lv_scr_act());
    // 设置旋转器值的范围
    lv_spinbox_set_range(spinbox, -10000, 99999);

    // 设置旋转器整数位数，第一个参数为总位数，即小数部分位数加整数部分位数，第二个参数为整数部分位数
    // 所以小数部分位数为第一个参数—第二个参数
    lv_spinbox_set_digit_format(spinbox, 5, 3);
    // 移动自旋框的值到最小值
    lv_spinbox_step_prev(spinbox);
    // 设置自旋框的宽度
    lv_obj_set_width(spinbox, 100);
    // 设置自旋框的位置居中
    lv_obj_center(spinbox);

    // 获取自旋框的高度
    lv_coord_t h = lv_obj_get_height(spinbox);
    // 创建增加按钮，并设置其大小与自旋框相同。
    lv_obj_t * btn = lv_btn_create(lv_scr_act());
    // 设置按钮的大小
    lv_obj_set_size(btn, h, h);
    // 将按钮放置在自旋框的右中侧，距离__个像素点连接。
    lv_obj_align_to(btn, spinbox, LV_ALIGN_OUT_RIGHT_MID, 5, 0);
    // 设置按钮的背景图标为加号
    lv_obj_set_style_bg_img_src(btn, LV_SYMBOL_PLUS, 0);
    // 为按钮添加事件回调函数
    lv_obj_add_event_cb(btn, lv_spinbox_increment_event_cb, LV_EVENT_ALL,  NULL);

    // 创建减少按钮，并设置其大小与自旋框相同。
    btn = lv_btn_create(lv_scr_act());
    // 设置按钮的大小
    lv_obj_set_size(btn, h, h);
    // 将按钮放置在自旋框的左中侧，距离__个像素点连接。
    lv_obj_align_to(btn, spinbox, LV_ALIGN_OUT_LEFT_MID, -5, 0);
    // 设置按钮的背景图标为减号
    lv_obj_set_style_bg_img_src(btn, LV_SYMBOL_MINUS, 0);
    // 为按钮添加事件回调函数
    lv_obj_add_event_cb(btn, lv_spinbox_decrement_event_cb, LV_EVENT_ALL, NULL);
}

#endif
